package com.cn.wanxi.thread.model;

public class Productor extends Thread {
    //对于生产者来说，我们需要以下几个步骤：
    //判断生产者是否还可以生产，因为规定一天只生产10个，可以则继续，不能则返回
    //第一：判断仓库里面是否有还有物品
    //第二：如果有，则线程等待，即等待消费者来拿
    //第三：如果没有，则生产物品，并提示仓库里面有东西，并呼叫消费者
    //生产者的run方法，一直向仓库添加元素
    public void run() {
        //方法重写 继承关系，名字和参数必须一致
        while (true) {//因为我们不知道是否需要循环，所以这里一直循环下去
            //必须要求我们生产者和消费者里面的东西唯一，否则消费者拿到的东西就不是生产者生产的东西，所以不能用new WareHouse()，来创建对象
            synchronized (WareHouse.object) {
                if (WareHouse.count == 0) {
                    break;
                } else {
                    if (!WareHouse.isNull) {
                        System.out.println(getName() + "生产者生产产品");
                        WareHouse.isNull = true;
//                        唤醒所有线程：唤醒消费者来拿
                        WareHouse.object.notifyAll();
                    } else {
                        try {
//                            让消费者等待
//                            wait 线程等待
                            WareHouse.object.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                    }

                }
            }
        }
    }
}